/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#include "../import/head.h"
#include "../impl/head.h"
#include "connection.h"
#include "udp.h"

namespace xos_net
{

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

    static udp::ITEM_DATA xos_item_data;

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    udp::udp()
    {
        init_data();
    }

    udp::~udp()
    {
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

    int udp::get_xos_item_data( ITEM_DATA*& item_ptr )
    {
        int ret = 0;
        xos_item_data.set_container( mgr::container() );
        item_ptr = &xos_item_data;
        return ret;
    }

    int udp::init( udp::T *& pUdp, connection *& pConnect )
    {
        int ret = 0;

        if( 0 == ret )
        {
            xos_stl::init_pool_item( pConnect );
            xos_stl::init_pool_item( pUdp );
        }

        if( 0 == ret )
        {
            pUdp->m_pConnection = pConnect;
            pConnect->m_pUdp = pUdp;
        }

        return ret;
    }

    int udp::term( udp::T *& pUdp )
    {
        int ret = 0;
        connection * pConnect = pUdp->m_pConnection;
        xos_stl::release_interface( pUdp );
        xos_stl::release_interface( pConnect );
        return ret;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

    int udp::init_data()
    {
        int ret = 0;

        m_pConnection = 0;
        m_pAioKey = 0;

        m_nLocalPort = 0;
        m_local_ip = "";

        m_nPeerPort = 0;
        m_peer_ip = "";

        return ret;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

	int udp::init()
    {
        int ret = 0;
        return ret;
    }

    int udp::term()
    {
        int ret = 0;
        init_data();
        return ret;
    }

} // xos_net
